package edu.guigu.serverservice.local;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;

// 普通服务, 通过startService()启动
public class SimpleService extends Service {
    public SimpleService() {
    }

    // 绑定服务时(bindService)才会调用
    @Override
    public IBinder onBind(Intent intent) {
        Log.d("TAG", getClass().getSimpleName() + " onBind: ");
        return null;
    }

    // 首次创建服务时，系统将调用此方法来执行一次性设置程序
    // 如果服务已在运行，则不会调用此方法。该方法只被调用一次
    @Override
    public void onCreate() {
        super.onCreate();
        Log.d("TAG", getClass().getSimpleName() + " onCreate: ");
    }

    /**
     * 每次通过startService()方法启动Service时都会被回调。
     * @param intent 启动组件传递过来的Intent，可携带数据
     * @param flags
     * @param startId 当前服务的唯一ID,与 stopSelfResult(int) 结合使用
     * @return
     */
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d("TAG", getClass().getSimpleName() + " onStartCommand: ");
        // START_STICKY 服务被杀死后会尝试重新创建服务(需要一直运行的服务,后台音乐播放持续性服务)
        // START_STICKY_COMPATIBILITY：START_STICKY的兼容版本，但不保证服务被kill后一定能重启。
        // START_NOT_STICKY 服务被杀死后不会重新创建(非必须服务,定时任务一次性操作)
        // START_REDELIVER_INTENT 服务被杀死后会重新创建并重新传递最后一次的 Intent(需要继续之前任务,文件下载数据同步)
        return START_STICKY_COMPATIBILITY;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.d("TAG", getClass().getSimpleName() + " onDestroy: ");
        stopSelf();
    }
}